Traditionally we use IDE (Integrated Development Environment) to modify a source file's content, VCS (Version Control System) to do the version control of source file's version. In most situations, VCS does not insert additional information into the source file's content, but adds some metadata of that file in the VCS to track the version change. That means version control information cannot be seen by developers directly. Once the source file is retrieved out of the VCS, users cannot directly see source file's version control and the additional information that helps to recognize the modification state.
Most popular VCS products, for example CVS (Concurrent Versions System), ClearCase, and CMVC (Configuration Management Version Control), provide strong version control functions for users, such as performing actions like add into source control, check-in, check-out, and the like, on the source file.
CVS is used to record all source codes' modification history. The basic idea for CVS is to build a file repository on a server, where many different projects' source programs can be stored in the file repository, and the storage and configuration of the file repository is uniformly managed by an administrator. When using version control tools, each user can add a new file into the file repository or download an existing project file in the file repository to local. Any change made by the user is first performed at local, and then submitted with a CVS command, and the CVS system tracks the change of the file and detects modification collisions.
ClearCase is an SCM (Software Configuration Management) tool, and provides the necessary automated means and flow support used to realize SCM best practice. ClearCase provides an open framework to realize various different types of SCM solutions.
CMVC is based on a project database. It separates the storage of all software development project's description and source file meta-information (i.e. metadata, such as file update record, etc.) from the source file itself, and saves them in a separate database.
However, these version control systems can only provide a unified method and action to handle all situations, and users cannot do customization during development of different source files and projects.